package com.naiterui.ehp.ps.schedule.service;

import java.util.List;

import org.quartz.JobDetail;
import org.quartz.SchedulerException;

import com.naiterui.ehp.ps.schedule.vo.ScheduleJobVO;

/**
 * 调度任务service
 *
 * @since HZD-1.0.0
 */
@SuppressWarnings("unused")
public interface IScheduleJobService {

    /**
     * 添加定时任务
     * IScheduleJobService.add()
     *
     * @param scheduleJobVO
     *
     * @Date 2016年1月16日
     * @since 2.0.0
     */
    void add(ScheduleJobVO scheduleJobVO) throws SchedulerException;

    /**
     * 修改定时任务 IScheduleJobService.update()
     *
     * @param scheduleJobVO
     *
     * @Date 2016年1月16日
     * @since 2.0.0
     */
    void update(ScheduleJobVO scheduleJobVO) throws SchedulerException;

    /**
     * 获取所有JobDetail
     * IScheduleJobService.getJobs()
     *
     * @return
     *
     * @Date 2016年1月16日
     * @since 2.0.0
     */
    List<JobDetail> getJobs() throws SchedulerException;

    /**
     * 获取所有计划中的任务
     * IScheduleJobService.getAllScheduleJob()
     *
     * @return
     *
     * @Date 2016年1月16日
     * @since 2.0.0
     */
    List<ScheduleJobVO> getAllScheduleJob() throws SchedulerException;

    /**
     * 获取所有运行中的任务
     * IScheduleJobService.getAllRuningScheduleJob()
     *
     * @return
     *
     * @Date 2016年1月16日
     * @since 2.0.0
     */
    List<ScheduleJobVO> getAllRuningScheduleJob() throws SchedulerException;

    /**
     * 获取所有的触发器
     * IScheduleJobService.getTriggersInfo()
     *
     * @return
     *
     * @Date 2016年1月16日
     * @since 2.0.0
     */
    List<ScheduleJobVO> getTriggersInfo() throws SchedulerException;

    /**
     * 暂停任务
     * IScheduleJobService.stopJob()
     *
     * @param name
     * @param group
     *
     * @Date 2016年1月16日
     * @since 2.0.0
     */
    void stopJob(String name, String group) throws SchedulerException;

    /**
     * 恢复任务
     * IScheduleJobService.restartJob()
     *
     * @param name
     * @param group
     *
     * @Date 2016年1月16日
     * @since 2.0.0
     */
    void restartJob(String name, String group) throws SchedulerException;

    /**
     * 立马执行一次任务
     * IScheduleJobService.startNowJob()
     *
     * @param name
     * @param group
     *
     * @Date 2016年1月16日
     * @since 2.0.0
     */
    void startNowJob(String name, String group) throws SchedulerException;

    /**
     * 删除任务
     * IScheduleJobService.deleteJob()
     *
     * @param name
     * @param group
     *
     * @Date 2016年1月16日
     * @since 2.0.0
     */
    void deleteJob(String name, String group) throws SchedulerException;

    /**
     * 修改触发器时间
     * IScheduleJobService.modifyTrigger()
     *
     * @param name
     * @param group
     * @param cron
     *
     * @Date 2016年1月16日
     * @since 2.0.0
     */
    void modifyTrigger(String name, String group, String cron) throws SchedulerException;

    /**
     * 暂停调度器
     * IScheduleJobService.stopScheduler()
     *
     * @Date 2016年1月16日
     * @since 2.0.0
     */
    void stopScheduler() throws SchedulerException;

}
